package cn.tedu.servlet;

import cn.tedu.core.ServerServlet;
import cn.tedu.http.HttpRequest;
import cn.tedu.http.HttpResponse;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

/**
 * Author：程Sir
 * Name： SmallServer
 * Content:
 * 这是一个处理用户信息修改的类
 */
public class UpdateUserServlet  extends ServerServlet {
    public void service(HttpRequest request, HttpResponse response) {
        System.out.println("用户修改业务执行....................");
        // 获取用户新数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String nikename = request.getParameter("nikename");
        String age = request.getParameter("age");

        // 将用户的旧数据替换为新数据
        /*
            是否为null，如果有字段为null，这响应一个错误提示页面：提交的注册信息有误，请重新提交！
         */
        if (password==null || nikename==null || age ==null || !age.matches("[0-9]+")){
            File file = new File("./webapps/myweb/updateInfo_error.html");
            response.setFileEntity(file);
            return;
        }else{// 校验通过
            // 将数据写入文件中：user.txt
            // 创建对象
            try (RandomAccessFile raf = new RandomAccessFile("user.txt","rw")){

                // 首先判断用户名是否存在
                for (int i = 0; i <raf.length()/100; i++) {
                    raf.seek(i*100);
                    byte[] datas = new byte[32];
                    // 读32个字节，拿到的就是用户名
                    raf.read(datas);
                    String name = new String(datas,"utf-8");// 32
                    // 去除空白
                    name = name.trim();
                    // 判断
                    if (username.equals(name)){
                        System.out.println("=====存在======");
                        // 将最新的数据写入文本（替换旧数据，从密码开始）
                        datas = password.getBytes("utf-8");
                        // 将密码的长度进行扩容  32
                        datas = Arrays.copyOf(datas, 32);
                        // 写入密码
                        raf.write(datas);

                        datas = nikename.getBytes("utf-8");
                        // 将昵称的长度进行扩容  32
                        datas = Arrays.copyOf(datas, 32);
                        // 写入昵称
                        raf.write(datas);

                        // 写入年龄 4
                        raf.writeInt(Integer.valueOf(age));
                        break;
                    }

                }
                /*
                  更新成功 则提示：恭喜您。您提交的数据已完成更新！
                */

//                File file = new File("./webapps/myweb/updateInfo_success.html");
//                response.setFileEntity(file);
                ShowAllDataServlet showAllDataServlet = new ShowAllDataServlet();
                showAllDataServlet.service(request, response);
                return;

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }



    }
}
